// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../SQLStatementImpl.h"

class SQLOpenStatement : virtual public SQLStatementImpl
{
public:
  // cursor name
  SQLName_ptr cursorName;

  SQLName_list_ptr columns;

  SQLExpr_ptr forExpr;

  SQLExpr_list_ptr using_;

  SQLOpenStatement();
  SHAREDOBJECT(SQLOpenStatement);

  SQLName_ptr getCursorName();

  void setCursorName(string_ptr cursorName);

  void setCursorName(SQLName_ptr cursorName);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  SQLExpr_ptr getFor();

  void setFor(SQLExpr_ptr forExpr);

  SQLName_list_ptr getColumns();

  SQLExpr_list_ptr getUsing();
};
